package com.lisn.roomlib.FileInfo;

import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;

import java.util.List;

/**
 * @author : lishan
 * @e-mail : cnlishan@163.com
 * @date : 2020/8/12 3:57 PM
 * @desc :
 */

@Dao
public interface FileInfoDao {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    long save(FileInfo fileInfo);

    /**
     * 注意，冒号后面必须紧跟参数名，中间不能有空格。大于小于号和冒号中间是有空格的。
     * select *from cache where【表中列名】 =:【参数名】------>等于
     * where 【表中列名】 < :【参数名】 小于
     * where 【表中列名】 between :【参数名1】 and :【参数2】------->这个区间
     * where 【表中列名】like :参数名----->模糊查询
     * where 【表中列名】 in (:【参数名集合】)---->查询符合集合内指定字段值的记录
     *
     * @param key
     * @return
     */

    //如果是一对多,这里可以写List<Cache>
    @Query("select *from FileInfo where `name`=:key")
    FileInfo getFileInfo(String key);


    @Query("select *from FileInfo")
    List<FileInfo> loadAllFileInfo();

    /**
     * 按名称排序
     *
     * @return
     */
    @Query("select *from FileInfo ORDER BY name ASC")
    LiveData<List<FileInfo>> getAlphabetizedFileInfo();

    //只能传递对象昂,删除时根据FileInfo中的主键 来比对的
    @Delete
    int delete(FileInfo fileInfo);


    @Query("DELETE FROM FileInfo")
    void deleteAll();

    //只能传递对象昂,更新时根据FileInfo中的主键 来比对的
    @Update(onConflict = OnConflictStrategy.REPLACE)
    int update(FileInfo fileInfo);
}
